package com.otv.tipoalojamiento.dao;

import java.util.List;

import org.hibernate.SessionFactory;

import com.otv.model.TipoAlojamiento;


/**
 * Class TipoAlojamientoDAO.
 */
public class TipoAlojamientoDAO implements ITipoAlojamientoDAO {
	
	/** El/la session factory. */
	private SessionFactory sessionFactory;


	@Override
	public void addTipoAlojamiento(TipoAlojamiento tipoAlojamiento) {
		getSessionFactory().getCurrentSession().save(tipoAlojamiento);
	}


	@Override
	public void updateTipoAlojamiento(TipoAlojamiento tipoAlojamiento) {
		getSessionFactory().getCurrentSession().update(tipoAlojamiento);
	}


	@Override
	public void deleteTipoAlojamiento(TipoAlojamiento tipoAlojamiento) {
		getSessionFactory().getCurrentSession().delete(tipoAlojamiento);
	}


	@Override
	public TipoAlojamiento getTipoAlojamientoById(int id) {
		List tipoAlojamiento = getSessionFactory().getCurrentSession().createQuery("FROM TipoAlojamiento WHERE id=?").setParameter(0, id).list();
		return (TipoAlojamiento) tipoAlojamiento.get(0);
	}


	@Override
	public List<TipoAlojamiento> getTiposAlojamientos() {
		List tipoAlojamiento = getSessionFactory().getCurrentSession().createQuery("FROM TipoAlojamiento").list();
		return tipoAlojamiento;
	}

	/**
	 * Devuelve un(a) session factory.
	 *
	 * @return El/la session factory
	 */
	public SessionFactory getSessionFactory() {
		return sessionFactory;
	}

	/**
	 * Asigna el/la session factory.
	 *
	 * @param sessionFactory un(a) nuevo(a) session factory
	 */
	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

}
